We have had several requests for providing a way to have
tabs in different tab decks all have the same tab width. We
have added several new functions to VkTabPanel to provide
this.
- 6 -
+o ggggeeeettttTTTTaaaabbbbWWWWiiiiddddtttthhhh(((()))) - gets the width of a specific tab.
+o ggggeeeettttMMMMaaaaxxxxTTTTaaaabbbbWWWWiiiiddddtttthhhh(((()))) - gets the width of the widest tab.
+o mmmmaaaattttcccchhhhTTTTaaaabbbbWWWWiiiiddddtttthhhh (((()))) - makes the width of the labels in two
or more VkTabPanels be the same.
+o sssseeeettttTTTTaaaabbbbWWWWiiiiddddtttthhhh(((()))) - sets the with of the tabs in a single
tab panel.
There is also a demo,
////uuuussssrrrr////sssshhhhaaaarrrreeee////ssssrrrrcccc////VVVViiiieeeewwwwKKKKiiiitttt////CCCCoooommmmppppoooonnnneeeennnnttttssss////ttttaaaabbbb....cccc++++++++. Read the source
-- there are several comments about the new calls. By
reading the comments and playing around with the code, you
should be able to easily make it all work for you.
3.2.8 _N_e_w__m_a_c_r_o___f_a_m_i_l_y__V_k_A_s_s_e_r_t_* Macros have been added
to give increased control over assertions in your code. See
_m_a_n _V_k_A_s_s_e_r_t and _V_k/_V_k_F_u_n_c_t_i_o_n._h>.
There are no more ViewKit *_d.a debug libraries, requiring
relinking your application to use them.
Debug libraries are now DSO's that are installed in the
debug subdirectory below the corresponding normal DSO. The
library names are identical. This means that an application
can link normally, rather than with a special debug library.
By setting the environment variables LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY____PPPPAAAATTTTHHHH,
LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYYNNNN33332222____PPPPAAAATTTTHHHH or LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY66664444____PPPPAAAATTTTHHHH, the application can
run with the debug library.
- 9 -
For example, to run with the 64-bit debug libraries, just:
+o Link normally, such as with "-L/usr/lib64 -lvk".
+o When you want to run with the debug libraries, set the
environment variable LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY66664444____PPPPAAAATTTTHHHH to
/usr/lib64/debug.
As always, the debug libraries have a number of aaaasssssssseeeerrrrtttt
statements. These are intended to check both the
application's use of the library and internal library
consistency. The assertions are not as complete as we would
like, but we are adding more over time.
3.7 _C_l_a_s_s__E_n_h_a_n_c_e_m_e_n_t_s
We have been very careful to maintain binary compatibility
when enhancing a class. Some changes introduce entirely
new, non-conflicting, behavior for the class. Other changes
introduce a choice between a new behavior and the way the
class has behaved in the past. In such a case, to preserve
compatibility, the default remains to run the old way. An
application has to do something, such as set a resource, to
get the new behavior.
3.7.1 _V_k_A_p_p__E_n_h_a_n_c_e_m_e_n_t_s For more information about any of
these enhancements, see _m_a_n _V_k_A_p_p(_3_X).
3.7.1.1 _V_k_A_p_p_:_:_r_u_n_(_) There is a new debugging resource,
_p_r_i_n_t_E_v_e_n_t. If set non-zero, all events are printed to
stderr.
_V_k_A_p_p::_r_u_n and _V_k_A_p_p:_h_a_n_d_l_e_P_e_n_d_i_n_g_E_v_e_n_t_s() now have
increased event-handling flexibility. They now allow the
application more control over how the X event loop is
handled, without the need to override the ViewKit routine.
Until now overriding _V_k_A_p_p::_r_u_n() has been dangerous
(because of potential compatibility problems). It continues
to be the case that very few applications have a legitimate
need to override _V_k_A_p_p::_r_u_n(). However, there is now a safe
way for those applications that _d_o have this need to do so.
See the following topics in the VkApp(3) manual page:
_r_u_n(), _r_u_n__f_i_r_s_t(), _r_u_n_O_n_e_E_v_e_n_t(), _h_a_n_d_l_e_P_e_n_d_i_n_g_E_v_e_n_t_s, and
_h_a_n_d_l_e_O_n_e_P_e_n_d_i_n_g_E_v_e_n_t.
There is a new demo program that shows the improved event
handling. See /_u_s_r/_s_h_a_r_e/_s_r_c/_V_i_e_w_K_i_t/_B_a_s_i_c/_r_u_n._c++.
- 10 -
Running this program will clearly show which code is doing
what art of the job.
3.7.1.2 _V_k_A_p_p_:_:_u_s_e_S_c_h_e_m_e_s_(_) The static function
_V_k_A_p_p::_u_s_e_S_c_h_e_m_e_s(_c_h_a_r *_v_a_l) has been added to let schemes
be turned on or off programmatically. Schemes defaults to
being on. For example,
+o uuuusssseeeeSSSScccchhhheeeemmmmeeeessss((((""""aaaallllllll"""")))) will turn schemes on
+o uuuusssseeeeSSSScccchhhheeeemmmmeeeessss((((""""nnnnoooonnnneeee"""")))) will turn schemes off
3.7.1.3 _N_e_w__r_e_s_o_u_r_c_e_:__q_u_i_t_M_o_d_e _q_u_i_t_M_o_d_e is a new string-